package org.abc.fund.repository.funds;

import org.abc.fund.entity.funds.FundNetValueHistory;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
@Repository
public interface FundNetValueHistoryRepository extends JpaRepository<FundNetValueHistory, Long> {
     //根据基金代码和日期查找净值记录
    Optional<FundNetValueHistory> findByFundCodeAndNetDate(String fundCode, LocalDate endDate);

     //根据基金代码查找最新的净值记录（按净值日期降序）
    Optional<FundNetValueHistory> findTopByFundCodeOrderByNetDateDesc(String fundCode);

    @Modifying
    @Transactional
    void deleteByFundCodeAndNetDateBetween(String fundCode, LocalDate startDate, LocalDate endDate);

    // 某基金全部净值记录（按时间降序）
    List<FundNetValueHistory> findByFundCodeOrderByNetDateDesc(String fundCode);

    // 某基金在时间范围内净值记录
    List<FundNetValueHistory> findByFundCodeAndNetDateBetweenOrderByNetDateDesc(String fundCode, LocalDate start, LocalDate end);

    //获取某基金最近一条净值
    FundNetValueHistory findFirstByFundCodeOrderByNetDateDesc(String fundCode);

    //最近30日净值（用于走势图）
    List<FundNetValueHistory> findTop30ByFundCodeOrderByNetDateDesc(String fundCode);
}






